gui/macOS: Forcibly reconfigure file provider domains with illegal domain names
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Mon, 10 Feb 2025 07:10:45 +0000 (15:10 +0800)
committerMatthieu Gallien <matthieu.gallien@nextcloud.com>
Mon, 10 Feb 2025 11:01:06 +0000 (12:01 +0100)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
src/gui/macOS/fileproviderdomainmanager_mac.mm

index 1c033554d06d4053fc2d02092d8b899d82dea056..2454a655610e051a8882f744b682ce42c88f3f51 100644 (file)
@@ -174,6 +174,26 @@ public:
                         qCInfo(lcMacFileProviderDomainManager) << "Found existing file provider domain for account:"
                                                                << accountState->account()->displayName();
                         [domain retain];
+
+                        if (illegalDomainIdentifier(QString::fromNSString(domain.identifier))) {
+                            qCWarning(lcMacFileProviderDomainManager) << "Found existing file provider domain with illegal domain identifier:"
+                                                                      << domain.identifier
+                                                                      << "removing and recreating";
+                            [NSFileProviderManager removeDomain:domain completionHandler:^(NSError * const error) {
+                                if (error) {
+                                    qCWarning(lcMacFileProviderDomainManager) << "Error removing file provider domain with illegal domain identifier: "
+                                                                              << error.code
+                                                                              << error.localizedDescription;
+                                    
+                                } else {
+                                    qCInfo(lcMacFileProviderDomainManager) << "Successfully removed file provider domain with illegal domain identifier: "
+                                                                           << domain.identifier;
+                                }
+                                [domain release];
+                            }];
+                            return;
+                        }
+                        
                         _registeredDomains.insert(accountId, domain);
 
                         NSFileProviderManager * const fpManager = [NSFileProviderManager managerForDomain:domain];